package controllers

/*
@Project        :   tmp_report
@FileName       :   user.go
@Author         :   tangchaolizi
@Datetime       :   2020/7/25 8:47 下午
@Software       :   GoLand
@Show           :
*/

import (
	"github.com/astaxie/beego"
	"github.com/astaxie/beego/orm"
	"strings"
	"tmp_report/models"
	_ "tmp_report/models"
)
type UserController struct {
	beego.Controller
}

// 用户登陆页面展示
func (c *UserController) Get() {
	c.TplName = "tmp/sign_in.html"
}

// 接收信息，登陆
func (c *UserController) Login() {
	// 拿到浏览器数据，并去除两边的空格
	Username := strings.TrimSpace(c.GetString("Username"))
	Password := strings.TrimSpace(c.GetString("Password"))
	beego.Info("账号:", Username, "密码:", Password)

	// 数据处理
	var Jsons Jsons  // 结构化Jsons
	if Username == "" || Password == "" {
		beego.Warning("登录失败！")
		Jsons.Status, Jsons.Msg = 0,"请输入用户名或者密码"
		c.Data["json"] = Jsons
		c.ServeJSON()
		return
	}
	// 查找数据库
	o := orm.NewOrm()  // 获取orm对象
	var user models.UserTable  //获取查询对象
	user.Username = Username  // 查询
	err := o.Read(&user, "Username")
	// 判断用户名是否正确
	if err != nil {
		beego.Warning("用户名错误！")
		Jsons.Status, Jsons.Msg = 0,"用户名错误！"
		c.Data["json"] = Jsons
		c.ServeJSON()
		return
	}
	// 判断密码是否一致
	if user.Password != Password {
		beego.Warning("密码错误！")
		Jsons.Status, Jsons.Msg = 0,"密码错误！"
		c.Data["json"] = Jsons
		c.ServeJSON()
		return
	}
	c.SetSession("Username", user.Username)  // 设置Session
	// 测试返回视图
	beego.Info(user.Username, "登陆成功")
	Jsons.Status, Jsons.Msg = 1,"登陆成功！"
	c.Data["json"] = Jsons
	c.ServeJSON()
}

// 退出登陆
func (c *UserController) Logout(){
	// 删除Session
	c.DelSession("TmpSession")
	c.DelSession("Username")
	c.Redirect(beego.URLFor("MainController.Get"), 302)  // 跳转至首页
}